/*************************************************************************
*File Name: itimer.cpp
*Author: 侯广臣
*2801059691@qq.com
*Created Time: Tue 02 Feb 2021 11:03:34 AM CST
 ************************************************************************/
#include "itimer.h"
#include <stdio.h>

//开始计时，计时时间累加
time_t C_Timer::Start()
{
   if(m_isPause)
   {
       m_startTime = time(0);
       m_isPause = false;
   }
   return m_startTime;
}
//暂停计时
time_t C_Timer::Pause()
{
    if(!m_isPause)
    {
        m_elapsedTime += time(0) - m_startTime;
        m_isPause = true;
    }
    return m_elapsedTime;
}
//重新计时，计时时间清零
time_t C_Timer::Restart()
{
    time_t temp = m_elapsedTime;
    m_elapsedTime = 0;
    m_isPause = false;
    m_startTime = time(0);
    return temp;
}
//获取流逝时间，也就是计时时间
time_t C_Timer::GetElapsedTime()
{
    if(m_isPause)
    {
        return m_elapsedTime;
    }
    else
    {
        return time(0) - m_startTime + m_elapsedTime;
    }
}
//是否超时
bool C_Timer::IsTimeOut()
{
    if(m_isPause)
        return m_elapsedTime >= m_timing;
    else
        return time(0) - m_startTime + m_elapsedTime >= m_timing;
}

/********************************************************************************************/
//以下返回计时单位均为：秒
//开始计时，计时时间不清零，返回计时时间
clock_t C_ClockTimer::Start(void)
{
    if(m_isPause)
    {
        m_start = clock();
        m_isPause = false;
    }
    return m_start;
}

//重样开始计时，返回计时时间
double C_ClockTimer::Restart(void)
{
    clock_t temp = m_elapsed;
    m_elapsed = 0;
    m_isPause = false;
    m_start = clock();
    return ClockToDouble(temp);
}
//暂停计时，返回计时时间
double C_ClockTimer::Pause(void)
{
    if(!m_isPause)
    {
        m_elapsed += clock() - m_start;
        m_isPause = true;
    }
    return ClockToDouble(m_elapsed);
}
//获取计时时间
double C_ClockTimer::GetElapsedTime(void)
{
    if(m_isPause)
    {
        return ClockToDouble(m_elapsed);
    }
    else
    {
        return ClockToDouble(clock() - m_start + m_elapsed);
    }
}
